#ifndef __UART_H
#define __UART_H

#include "gd32f1x0.h"
#include <stdio.h>
#include <macro.h>

//#define TE485 GPIO_SetBits(GPIOA, GPIO_Pin_4);
//#define RE485 GPIO_ResetBits(GPIOA, GPIO_Pin_4);

//#define Addr5_READ                GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_5)
//#define Addr4_READ                GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_6)
//#define Addr3_READ                GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_7)
//#define Addr2_READ                GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_0)
//#define Addr1_READ                GPIO_ReadInputDataBit( GPIOA, GPIO_Pin_1)
//#define Addr0_READ                GPIO_ReadInputDataBit( GPIOF, GPIO_Pin_0)

#define TE485 gpio_bit_set(GPIOA, GPIO_PIN_1)
#define RE485 gpio_bit_reset(GPIOA, GPIO_PIN_1)

#define Addr0_READ gpio_input_bit_get(GPIOA, GPIO_PIN_4)
#define Addr1_READ gpio_input_bit_get(GPIOA, GPIO_PIN_0)
#define Addr2_READ gpio_input_bit_get(GPIOF, GPIO_PIN_0)
#define Addr3_READ gpio_input_bit_get(GPIOA, GPIO_PIN_7)
#define Addr4_READ gpio_input_bit_get(GPIOA, GPIO_PIN_6)
#define Addr5_READ gpio_input_bit_get(GPIOA, GPIO_PIN_5)

void uart1_init(uint16_t baudrate);
void uart1_dma_send(uint8_t *s_addr, uint16_t length);
int fputc(int ch, FILE *f);
void UART_send_byte(uint8_t byte);
void UART_Send(uint8_t *Buffer, uint32_t Length);
uint8_t UART_Recive(void);
extern void CommAddress_GPIO_Init(void);
extern INT8U GetCommAddress(void);

#endif /* __UART_H */
